<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  
  
  <title>git备忘录 | Li ShiWang</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta name="description" content="TOC{:toc}  git 常用命令速查表 Pro git book 里面的内容应该是足够日常使用了，也是查阅的好地方。本文内容在其中应该都能够找到。 git 常见场景下的用法撤销修改 放弃刚刚对一个文件的改动刚刚修改了一个文件，但是现在发现还是修改之前的好，打算放弃刚才对这个文件的修改。在这种情况下，其实只要执行一下 git status就会有所提示，比方我们刚刚修改了一个叫做index.h">
<meta property="og:type" content="article">
<meta property="og:title" content="git备忘录">
<meta property="og:url" content="https://jggnice.github.io/posts/31072.html">
<meta property="og:site_name" content="Li ShiWang">
<meta property="og:description" content="TOC{:toc}  git 常用命令速查表 Pro git book 里面的内容应该是足够日常使用了，也是查阅的好地方。本文内容在其中应该都能够找到。 git 常见场景下的用法撤销修改 放弃刚刚对一个文件的改动刚刚修改了一个文件，但是现在发现还是修改之前的好，打算放弃刚才对这个文件的修改。在这种情况下，其实只要执行一下 git status就会有所提示，比方我们刚刚修改了一个叫做index.h">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://jggnice.github.io/images/blog/2016/02-14/Git%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4.jpg">
<meta property="og:image" content="https://jggnice.github.io/images/blog/2016/02-14/git-status.png">
<meta property="article:published_time" content="2016-09-02T22:20:25.000Z">
<meta property="article:modified_time" content="2021-10-04T00:39:16.238Z">
<meta property="article:author" content="Li ShiWang">
<meta property="article:tag" content="《git》">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://jggnice.github.io/images/blog/2016/02-14/Git%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4.jpg">
  
    <link rel="alternate" href="/atom.xml" title="Li ShiWang" type="application/atom+xml">
  
  
    <link rel="shortcut icon" href="/favicon.png">
  
  
    
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/typeface-source-code-pro@0.0.71/index.min.css">

  
  
<link rel="stylesheet" href="/css/style.css">

  
    
<link rel="stylesheet" href="/fancybox/jquery.fancybox.min.css">

  
<meta name="generator" content="Hexo 5.4.0"></head>

<body>
  <div id="container">
    <div id="wrap">
      <header id="header">
  <div id="banner"></div>
  <div id="header-outer" class="outer">
    <div id="header-title" class="inner">
      <h1 id="logo-wrap">
        <a href="/" id="logo">Li ShiWang</a>
      </h1>
      
        <h2 id="subtitle-wrap">
          <a href="/" id="subtitle">个人站</a>
        </h2>
      
    </div>
    <div id="header-inner" class="inner">
      <nav id="main-nav">
        <a id="main-nav-toggle" class="nav-icon"></a>
        
          <a class="main-nav-link" href="/">Home</a>
        
          <a class="main-nav-link" href="/archives">Archives</a>
        
      </nav>
      <nav id="sub-nav">
        
          <a id="nav-rss-link" class="nav-icon" href="/atom.xml" title="RSS 订阅"></a>
        
        <a id="nav-search-btn" class="nav-icon" title="搜索"></a>
      </nav>
      <div id="search-form-wrap">
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="搜索"><button type="submit" class="search-form-submit">&#xF002;</button><input type="hidden" name="sitesearch" value="https://jggnice.github.io"></form>
      </div>
    </div>
  </div>
</header>

      <div class="outer">
        <section id="main"><article id="post-2016-09-03-git-information" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/posts/31072.html" class="article-date">
  <time class="dt-published" datetime="2016-09-02T22:20:25.000Z" itemprop="datePublished">2016-09-03</time>
</a>
    
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="p-name article-title" itemprop="headline name">
      git备忘录
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <ul>
<li>TOC<br>{:toc}</li>
</ul>
<h2 id="git-常用命令速查表"><a href="#git-常用命令速查表" class="headerlink" title="git 常用命令速查表"></a>git 常用命令速查表</h2><p><img src="/images/blog/2016/02-14/Git%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4.jpg" alt="git常用命令速查表"></p>
<p><a target="_blank" rel="noopener" href="https://git-scm.com/book/zh/v2">Pro git book</a> 里面的内容应该是足够日常使用了，也是查阅的好地方。本文内容在其中应该都能够找到。</p>
<h2 id="git-常见场景下的用法"><a href="#git-常见场景下的用法" class="headerlink" title="git 常见场景下的用法"></a>git 常见场景下的用法</h2><h3 id="撤销修改"><a href="#撤销修改" class="headerlink" title="撤销修改"></a>撤销修改</h3><ul>
<li><p>放弃刚刚对一个文件的改动<br>刚刚修改了一个文件，但是现在发现还是修改之前的好，打算放弃刚才对这个文件的修改。<br>在这种情况下，其实只要执行一下 <code>git status</code>就会有所提示，比方我们刚刚修改了一个叫做index.html的文件，在terminal中执行<code>git status</code>：<br> <img src="/images/blog/2016/02-14/git-status.png" alt="git status"><br>根据提示，使用<code>git add index.html</code>则是将此次修改提交到了暂存区，使用<code>git checkout -- index.html</code>则是放弃这次的修改，将文件还原到此次修改前的状态。</p>
</li>
<li><p>提交完了才发现漏掉了几个文件没有添加，或者提交信息写错了。<br>此时，可以运行带有 <code>--amend</code> 选项的提交命令尝试重新提交.这个命令会将暂存区中的文件提交。 如果自上次提交以来你还未做任何修改（例如，在上次提交后马上执行了此命令），那么快照会保持不变，而你所修改的只是提交信息。比如，在<code>git commit -m "modified inndex.html"</code>后， 你发现index写错了或者还有文件没有提交，如果还有文件additional-files需要提交，那么输入<code>git add additional-files</code>.如果没有任何文件需要修改提交，只是修改提交信息，那么直接输入<code>git commit --amend</code>，文本编辑器启动后，可以看到之前的提交信息。 编辑后保存会覆盖原来的提交信息。<br>最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。</p>
</li>
</ul>
<h3 id="版本回退"><a href="#版本回退" class="headerlink" title="版本回退"></a>版本回退</h3><p>版本回退大致分为2种情况:<br>1：一切操作都还停留在本地仓库，<code>add</code> –&gt; <code>commit</code>后并未 <code>push</code> 推送到远端；<br>2：已经执行 <code>push</code> 操作将修改推送到远端。</p>
<h4 id="尚未push"><a href="#尚未push" class="headerlink" title="尚未push"></a>尚未<code>push</code></h4><p> 这种情况发生在你的本地代码仓库，可能在执行 add –&gt; commit 以后发现代码有点问题，准备取消此次commit， 这时用到 <code>reset</code> 命令<br><code>git reset -- soft | -- mixed | -- hard</code></p>
<ul>
<li><p><code> -- mixed</code><br><code>git reset</code> 默认选项， 会保留源码， 只是将 git commit 和 index 信息回退到了某个版本. <code>git reset --mixed</code>  等价于  <code>git reset</code></p>
</li>
<li><p><code> -- soft</code><br>保留源码，只回退到 commit 信息到某个版本.不涉及 index 的回退，如果还需要提交，直接commit即可.</p>
</li>
<li><p><code> -- hard</code><br>源码也会回退到某个版本，commit 和 index 都回退到某个版本.(注意，这种方式是改变本地代码仓库源码)</p>
</li>
</ul>
<p>比方说我们想回到上一个版本。</p>
<p>首先，Git必须知道当前版本是哪个版本，在Git中，用HEAD表示当前版本，也就是最新的提交版本，上一个版本就是<code>HEAD^</code>，上上一个版本就是<code>HEAD^^</code>，当然往上100个版本写100个<code>^</code>也不太容易，所以写成<code>HEAD~100</code>。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git reset --hard HEAD^  //  回到上一个版本</span><br></pre></td></tr></table></figure>

<p>当然有人在 push 代码以后，也使用 reset –hard &lt;commit…&gt; 回退代码到某个版本之前，但是这样会有一个问题，你线上的代码没有变，线上commit，index都没有变，当你把本地代码修改完提交的时候你会发现全是冲突…..</p>
<p> 所以，这种情况你要使用下面的方式:</p>
<h4 id="已经push"><a href="#已经push" class="headerlink" title="已经push"></a>已经<code>push</code></h4><p>对于已经把代码push到线上仓库，你想回退本地代码的同时也回退线上代码，回滚到某个指定的版本，线上，线下代码保持一致.这时要用到下面的revert命令</p>
<p>执行 revert 命令时要求工作树必须是干净的，git revert 用一个新提交来消除一个历史提交所做的任何修改.</p>
<p>revert 之后你的本地代码会回滚到指定的历史版本，这时你再 git push 即可以把线上的代码更新.(这里不会像reset造成冲突的问题)</p>
<p>revert 使用，需要先找到你想回滚版本唯一的 commit 标识代码，可以用 git log 查看.<br><code>git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61</code><br>通常，前几位即可 <code>git revert c011eb3</code><br>git revert 是用一次新的commit来回滚之前的commit，git reset是直接删除指定的commit</p>
<p>看似达到的效果是一样的，其实完全不同.</p>
<ol>
<li><p>上面我们说的如果你已经 push 到线上代码库， reset 删除指定 commit 以后，你 git push 可能导致一大堆冲突.但是 revert 并不会.</p>
</li>
<li><p>如果在日后现有分支和历史分支需要合并的时候，reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.</p>
</li>
<li><p>reset 是在正常的commit历史中，删除了指定的commit，这时 HEAD 是向后移动了，而 revert 是在正常的commit历史中再commit一次，只不过是反向提交，他的 HEAD 是一直向前的.</p>
</li>
</ol>
<h4 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h4><ul>
<li><a target="_blank" rel="noopener" href="https://yijiebuyi.com/blog/8f985d539566d0bf3b804df6be4e0c90.html">git reset revert 回退回滚取消提交返回上一版本</a></li>
</ul>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://jggnice.github.io/posts/31072.html" data-id="ckuc28glr0000vcqe6b7wcyfl" data-title="git备忘录" class="article-share-link">分享</a>
      
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E3%80%8Agit%E3%80%8B/" rel="tag">《git》</a></li></ul>

    </footer>
  </div>
  
    
<nav id="article-nav">
  
    <a href="/posts/17347.html" id="article-nav-newer" class="article-nav-link-wrap">
      <strong class="article-nav-caption">前一篇</strong>
      <div class="article-nav-title">
        
          打造一个简洁高效的Windows环境
        
      </div>
    </a>
  
  
</nav>

  
</article>


</section>
        
          <aside id="sidebar">
  
    

  
    
  <div class="widget-wrap">
    <h3 class="widget-title">标签</h3>
    <div class="widget">
      <ul class="tag-list" itemprop="keywords"><li class="tag-list-item"><a class="tag-list-link" href="/tags/java-code/" rel="tag">java code</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/%E3%80%8ALaTeX%E3%80%8B/" rel="tag">《LaTeX》</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/%E3%80%8AWindows%E3%80%8B/" rel="tag">《Windows》</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/%E3%80%8Agit%E3%80%8B/" rel="tag">《git》</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/%E3%80%8Avim%E3%80%8B/" rel="tag">《vim》</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">标签云</h3>
    <div class="widget tagcloud">
      <a href="/tags/java-code/" style="font-size: 10px;">java code</a> <a href="/tags/%E3%80%8ALaTeX%E3%80%8B/" style="font-size: 10px;">《LaTeX》</a> <a href="/tags/%E3%80%8AWindows%E3%80%8B/" style="font-size: 10px;">《Windows》</a> <a href="/tags/%E3%80%8Agit%E3%80%8B/" style="font-size: 10px;">《git》</a> <a href="/tags/%E3%80%8Avim%E3%80%8B/" style="font-size: 10px;">《vim》</a>
    </div>
  </div>

  
    
  <div class="widget-wrap">
    <h3 class="widget-title">归档</h3>
    <div class="widget">
      <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2021/10/">十月 2021</a></li><li class="archive-list-item"><a class="archive-list-link" href="/archives/2016/10/">十月 2016</a></li><li class="archive-list-item"><a class="archive-list-link" href="/archives/2016/09/">九月 2016</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">最新文章</h3>
    <div class="widget">
      <ul>
        
          <li>
            <a href="/posts/16107.html">Hello World</a>
          </li>
        
          <li>
            <a href="/posts/14858.html">Java code at 2016-10-18</a>
          </li>
        
          <li>
            <a href="/posts/27525.html">从零开始LaTeX快速入门</a>
          </li>
        
          <li>
            <a href="/posts/36939.html">学会使用vim</a>
          </li>
        
          <li>
            <a href="/posts/17347.html">打造一个简洁高效的Windows环境</a>
          </li>
        
      </ul>
    </div>
  </div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      
      &copy; 2021 Li ShiWang<br>
      Powered by <a href="https://hexo.io/" target="_blank">Hexo</a>
    </div>
  </div>
</footer>

    </div>
    <nav id="mobile-nav">
  
    <a href="/" class="mobile-nav-link">Home</a>
  
    <a href="/archives" class="mobile-nav-link">Archives</a>
  
</nav>
    


<script src="/js/jquery-3.4.1.min.js"></script>



  
<script src="/fancybox/jquery.fancybox.min.js"></script>




<script src="/js/script.js"></script>





  </div>
</body>
</html>